package com.woniuxy.reader.service;

import com.woniuxy.reader.entity.Author;
import com.woniuxy.reader.entity.Book;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.reader.vo.BookVO;
import com.woniuxy.reader.vo.BookVOOO;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author zh_o
 * @since 2020-10-12
 */
public interface BookService extends IService<Book> {
    /**
     * 获取所有作品
     * @return
     */
    List<Book> selectAll();

    /**
     * 获取自己签约作者的所有作品数据
     * @param id
     * @return
     */
    List<Book> selectData(int id);

    /**
     * 筛选未签约作品
     * @return
     */
    List<Book> selectNoSign();

    /**
     * 禁书
     */
    void updateBook(int bookid);

    /**
     * 作品申精
     * @param bookid
     */
    void updateBookFlag(int bookid);

    /**
     * 查询所有的作品数据，包括作品的状态、作品的字数、作品的连载状态等
     * @return
     */
    List<BookVOOO> selectAllBook();

    /**
     * 管理员设置精品
     * @param bookid
     */
    void setBoutique(int bookid);

    /**
     * 管理员取消精品
     * @param bookid
     */
    void setnormal(int bookid);

    /**
     * 根据作者id返回该作者写的书籍集合
     * @param authorId
     * @return
     */
    public List<Book> getBookByAid(Integer authorId);


     /**
     　* @Author daxigua
       * @Description 通过分类id，查询新书
       * @Date 2020/10/15  16:00
       * @return 分类下的新书
       */
     List<Book> selectBooksByCreatetimeAndCategoryId(Integer id);

      /**
      　* @Author daxigua
        * @Description  通过分类id 和 书的点击量 ，查询当前分类下的书的人气排行
        * @Date 2020/10/15  16:25
        * @Param  * @param id  分类id
        * @return 当前分类下的书的人气排行，降序排序
        */

     List<Book> selectBooksByCategoryIdAndClickNum(int id);

      /**
      　* @Author daxigua
        * @Description  通过分类id 和 书的收藏量 ，查询当前分类下的书的本周强推
        * @Date 2020/10/15  16:53
        * @Param  * @param id  分类id
        * @return 当前分类下的书的本周强推，降序排序
        */

     List<Book> selectBooksByCategoryIdAndCollection(int id);

      /**
      　* @Author daxigua
        * @Description  通过分类id，和书籍状态查出当前分类下完结的书籍
        * @Date 2020/10/15  17:14
        * @Param  * @param null
        * @return 当前分类下完结的书籍
        */

     List<Book> selectBookByStauts(int id);


    /**
     * 根据作者id查询书籍详情
     * @param authorid
     * @return
     */
     List<BookVO> managerselect(String authorid);

    /**
     * 根据书籍id 获取详细信息
     */
    Book getBookDetailById(Integer bookId);


      /**
      　* @Author daxigua
        * @Description 传入书名，进行模糊查询，查找所有包含改字符串的书
        * @Date 2020/10/16  14:55
        * @return 书的集合
        */
      List<Book> selectBookLikeBookName(String bookname);


       /**
       　* @Author daxigua
         * @Description  传入book实体，进行书籍新增
         * @Date 2020/10/17  12:11
         * @Param  * @param null
         * @return  0 新增失败，1新增成功
         */
       int insertBookByBook(Book book);
}
